package com.softeem.work.w4;

import java.util.ArrayList;

/**
 * 假设在一个企业人事管理系统员工管理模块中，
 * 有员工类存在，员工类中包含一个计算年薪的方法(抽象)，
 * 其中包含普通员工和部门经理，
 * 普通员工包含3个属性：姓名、工号以及月薪。
 * 部门经理除了含有普通员工的属性外，另外还有一个奖金属性。
 * 请使用继承的思想设计出员工类和经理类。
 * 要求类中提供必要的方法进行属性访问，实例化5名普通员工，2名部门经理，
 * 计算这七名员工的年薪
 */
public class Test {
    public static void main(String[] args) {
        Worker w = new Worker();
        w.setId(1);
        w.setName("张三");
        w.setSalary(1000);
        Worker w2 = new Worker(2,"李四",1000);
        Worker w3 = new Worker(3,"李五",1000);
        Worker w4 = new Worker(4,"李六",1000);
        Worker w5 = new Worker(5,"李七",1000);

        Manager m = new Manager();
        m.setId(6);
        m.setName("王五");
        m.setSalary(2000);
        m.setBonus(1000);
        Manager m2 = new Manager(7,"赵六",2000,1000);

        //因为worker和manager两个类都继承于emp这个类所以使用父类的类型定义
        //数组可以存储多种子类对象
        Emp[] emps = new Emp[]{w,w2,w3,w4,w5,m,m2};
        double count = 0;
        for(int i = 0; i < emps.length; i++){
            //如果你是普通的员工那么就只累加月薪*12
            if(emps[i] instanceof Worker){
                count += emps[i].getSalary()*12;
            }else{
                Manager man = (Manager)emps[i];
                count += man.getSalary()*12+man.getBonus();
            }
        }

        System.out.println("count = " + count);

    }
}
